import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

public class ReadImageFromURLExample {
    public static void main(String[] args) {
        //要从网络上读取图片，你可以使用Java的URL和URLConnection类来实现。
        //在上述代码中，我们首先创建一个URL对象，将图片的URL作为参数传入。然后，打开与该URL的连接，并获取输入流。
        // 接着，我们创建一个BufferedInputStream对象，用于读取数据。通过循环读取数据并写入到文件输出流中，
        // 最终将图像数据保存为图片文件。最后，记得关闭流。

        // 指定编码方式为UTF-8进行URL编码
        //String encodedString = URLEncoder.encode(originalString, "UTF-8"); 有中文路径的一定要编码，否则请求不到图片

        String imageUrl = "https://example.com/image.jpg"; // 图片的URL

        try {
            // 创建URL对象
            URL url = new URL(imageUrl);

            // 打开连接
            URLConnection connection = url.openConnection();

            // 获取输入流
            InputStream inputStream = connection.getInputStream();
            // 创建缓冲输入流
            BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);

            // 读取数据并保存为图片文件
            FileOutputStream fileOutputStream = new FileOutputStream("image.jpg");

            byte[] buffer = new byte[1024];//每次读取的大小
            int bytesRead;//读取多少个
            //进行读取，如果 不为 -1，一直读取
            while ((bytesRead = bufferedInputStream.read(buffer)) != -1) {
                //进行写入。写入的大小
                fileOutputStream.write(buffer, 0, bytesRead);
            }

            // 关闭流 输出流
            fileOutputStream.close();
            bufferedInputStream.close();

            System.out.println("Image downloaded successfully.");
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}